import { OSS_URL } from '../config.js'
import Base64 from './Base64.js'

/**
 * OSS图片质量
 */
export function ossImageQuality(config = {}) {
  const set_img = '?x-oss-process=image'
  const defaultConf = {
    // oss 远程地址
    oss_img_url: config.hasHttp ? '' : OSS_URL,
    // oss 图片源
    oss_img_source: '',
    // 图片缩略图等比例缩放百分比
    oss_img_p: 30,
    // 图片缩略图图片质量
    oss_img_q: 10
  }
  // 赋值
  for (let key in defaultConf) {
    if (config[key] === undefined) {
      config[key] = defaultConf[key]
    }
  }
  // oss图片源
  return `${config.oss_img_url}${config.oss_img_source}${set_img}/resize,p_${config.oss_img_p},quality,q_${config.oss_img_q}`
}
/**
 *来源https://help.aliyun.com/document_detail/44957.html?spm=a2c4g.11186623.6.1340.4f876b29egHm85
 *OSS图片水印
 * @param config
 * @returns {string}
 * @config  oss_w_t：透明度 默认值：100， 表示 100%（不透明）取值范围: [0-100]
 * @config  oss_w_g：水印位置 [nw,north,ne,west,center,east,sw,south,se]
 *                    上左，上中，上右，左、中、右、下左、下中、下右
 * @config  oss_w_x 水平边距, 就是距离图片边缘的水平距离， 这个参数只有当水印位置是左上，左中，左下， 右上，右中，右下才有意义。默认值：10取值范围：[0 – 4096]单位：像素（px）
 * @config  oss_w_y 垂直边距, 就是距离图片边缘的垂直距离， 这个参数只有当水印位置是左上，中上， 右上，左下，中下，右下才有意义默认值：10取值范围：[0 – 4096]单位：像素(px)
 * @config  oss_w_voffset 中线垂直偏移，当水印位置在左中，中部，右中时，可以指定水印位置根据中线往上或者往下偏移默认值：0取值范围：[-1000, 1000]单位：像素(px)
 * @config 在添加水印操作中，有很多参数需要进行Base64位编码，详细信息请参考RFC4648。注意这里的URL安全Base64位编码只是应用在水印操作某些特定参数（文字水印的文字内容，
 * @config 文字颜色，文字字体及图片水印的水印Object）中，请勿将其用在签名字符串（Signature）的内容里。编码格式为：
 * @config 先将内容编码成Base64结果
 * @config 将结果中的加号（+）替换成连接号（-）
 * @config 将结果中的正斜线（/）替换成下划线（_）
 * @config 将结果中尾部的等号（=）全部保留
 * @authorjayhao
 * @date 2019-5-30
 * @update 2020-3-3
 */
export function ossWatermarkToImage(config = {}) {
  const set_img = '?x-oss-process=image'
  const set_w_img = '/watermark,image_'
  const defaultConf = {
    // oss 远程地址
    oss_img_url: OSS_URL,
    // oss 图片源
    oss_img_source: '/userservice/2019/05/20/15583380363728083.jpg',
    // 图片缩略图等比例缩放百分比
    oss_img_p: 30,
    // 图片缩略图图片质量
    oss_img_q: 10,
    // oss 水印图片
    oss_w_img: 'system/image/water.png',
    // 水印缩放比例 设置了10, 当主图是100x100, 水印图片大小就为10x10,
    oss_w_p: '50',
    // 水印透明度
    oss_w_t: '50',
    // 水印位置
    oss_w_g: 'se',
    // 水印水平距离
    oss_w_x: '10',
    // 水印垂直距离
    oss_w_y: '10'
    // 居中偏移
    // oss_w_voffset:'0'
  }
  // 赋值
  for (let key in defaultConf) {
    if (config[key] === undefined) {
      config[key] = defaultConf[key]
    }
  }
  // oss图片源
  // const img_source = `${config.oss_img_url}${config.oss_img_source}${set_img}`
  const img_source = `${config.oss_img_url}${config.oss_img_source}${set_img}/resize,p_${config.oss_img_p},quality,q_${config.oss_img_q}`
  // oss水印图片
  const img_watermark = `${config.oss_w_img}${set_img}/resize,P_${config.oss_w_p}`

  // 处理水印图片
  let img_base64 = getBase64(img_watermark)
  img_base64 = img_base64.replace(/[+]/g, '-')
  img_base64 = img_base64.replace(/\//g, '_')
  // 设置水印图片参数
  const img_watermark_set = `${set_w_img}${img_base64},t_${config.oss_w_t},g_${config.oss_w_g},x_${config.oss_w_x},y_${config.oss_w_y}`
  // 返回
  // console.log(`${img_source}${img_watermark_set}`)
  return `${img_source}${img_watermark_set}`
}

/**
 * OSS文字水印
 */
export function ossWatermarkToText(conifg) {

}

export function getBase64(res) {
  return Base64.encode(res)
}
